The advent of communication networks such as the Internet has enabled users to access data stored by one or more servers coupled to the communication networks. The data may be stored in files on the servers and may be accessed by users using client systems coupled to the servers via one or more communication networks. The term “client” or “client system” is intended to refer to any computer system or like mechanism which is used by a user to request information or data stored by a server system or to request a service provided by a server system. The term “server” or “server system” is intended to refer to any computer system or like mechanism that stores information and provides the information in response to a user request received from a client computer, and/or provides some service. A particular computer system may function both as a client and as a server.
One use of the Internet is to allow users to access remotely stored content, such as documents and multimedia. To do so, typically a person operates a client system to access content on a remote origin server over the Internet. The client system may be, for example, a personal computer (PC) or a hand-held device such as a personal digital assistant (PDA) or cellular telephone. The client system normally includes a software application known as a browser, which can provide this functionality. A user of the client system typically operates the browser to locate and select content stored on the origin server, such as a web page or a multimedia file. In response to this user input, the browser sends a request for the content over the Internet to the origin server on which the content resides. In response, the origin server returns a response containing the requested content to the client, which outputs the content in the appropriate manner (e.g., it displays the web page or plays the audio file). The request and response may be communicated using well-known protocols, such as transmission control protocol/Internet protocol (TCP/IP) and hypertext transfer protocol (HTTP).
The data stored by an origin server may include media data, including streaming media data. The term “media data” is intended to include any of various types of data, including audio data, video data, image data, and other types of data and combinations thereof. The term “streaming media data” is generally used to refer to media data intended to be transported at a select (often, subscribed) bit rate, and with a desired timeliness. Streaming media generally data conforms to a real-time delivery protocol, such as, e.g., Real Time Streaming Protocol (RTSP), Real-Time Transport Protocol (RTP), etc. Streaming media data may also refer to data that may be contained in files stored by a media server that begin playing while the files are being transmitted over the network to a media player executing on a client system. This is in contrast to conventional data files that must be downloaded entirely to a client system before the user can view/play them using the client system. Streaming media may comprise a combination of video data, audio data, image data, interactive media data, animation data, panoramic data, executable files, presentation data, applet data, data files and other types of data in an integrated form. Streaming media data typically has a publishing point type of broadcast or on-demand and a content type of all video on-demand, all live, or mixed on-demand and live.
It is often desirable to cache network content in a device on the network that is located logically between the clients and the origin servers. The main purpose of caching content in this way is to reduce the latency associated with servicing content requests from clients. Storing certain content locally in the cache avoids the necessity of having to forward every content request over the network to the corresponding origin server and having to wait for a response. Instead, if the cache or caching server receives a request for content that it has cached, it simply provides the requested content to the requesting client (subject to any required authentication and/or authorization) without involving the origin server. An example of a device which has this functionality is the NetCache® product designed and manufactured by Network Appliance, Inc. of Sunnyvale, Calif. NetCache® is a registered trademark of Network Appliance, Inc.
Thus, caching servers may be used to reduce the time required to provide the requested data to the clients. Typical file caching methods include a cache receiving a file from an origin sever, such as a file server, and storing the file. Later, when a user requests data stored by the file, instead of serving the file from the file server, the file is served from the cache. Because the cache is typically a server that is closer to the client and/or has a higher bandwidth than the file sever, the file is served to the client quickly from the cache.
Data pointers and/or data references are typically provided to enable users to access the stored data. For example, in the World Wide Web (“Web”) environment, a user may access data stored in a particular file by selecting a Uniform Resource Locator
(URL) associated with the particular file. Using a client system, the user may configure a data request by selecting a URL using a program such as a browser or a multimedia player executing on the client system. In response to the data request, data corresponding to the user-selected URL may be communicated to the client system and output to the user. Typically, each URL refers to a single piece of streaming content.
Origin servers also support “server side playlists” (SSPs), which are lists of media content that are visible to a player as a single URL. A player is a client side software and/or hardware component that is used to play or render media data. When a player requests a URL of an SSP, the origin server streams a first entry in the list to the player. An entry is a media element in an SSP. Thus, an entry can be a media file, live encoder feed, and so forth. When the first entry is rendered, the origin serves the next entry to the player and so on. An SSP may have content of various types and of various publishing point types. For instance, an SSP having on-demand content type and on-demand publishing type, referred to herein as an “on-demand SSP,” typically provides a user with control over the content in the SSP. Accordingly, the user can perform such operations as fast forward, rewind, skip to another entry, seek, and pause. An SSP having live content type and broadcast publishing type, referred to herein as a “live SSP,” typically provides a user with less control over the content in the SSP. The user receives the broadcast stream as dictated by the SSP. An example of a live SSP is a broadcast stream of a football game as it happens. An SSP having an on-demand publishing point that also contains live content or an SSP having a broadcast publishing point that also contains on-demand content is referred to herein as a “mixed SSP.” An example of a mixed SSP is a broadcast stream of a football game as it happens with on-demand advertisements.
Caching servers associate a URL or other data pointer to each piece of streaming content that is cached. Thus, caching servers cannot split or serve or otherwise manage streaming media playlists associated with a single URL.